const { User } = require("../../models");
const { Op } = require("sequelize");
/**
 * 使用手机号吗获取用户信息
 * @param id
 * @param phone
 * @returns {Promise<Model|null>}
 */
exports.getUserByPhone = async (phone) => {
  try {
    // 查询条件
    const condition = {
      where: {
        phone,
      },
    };
    return await User.findOne(condition);
  } catch (error) {
    throw new Error(error);
  }
};

/**
 * 使用邮箱或用户名获取用户信息
 * @param login
 * @returns {Promise<Model|null>}
 */
exports.getUserByEmailOrUsername = async (login) => {
  try {
    // 查询条件
    const condition = {
      where: {
        [Op.or]: [
          {
            email: login,
          },
          {
            username: login,
          },
        ],
      },
    };
    return await User.findOne(condition);
  } catch (error) {
    throw new Error(error);
  }
};

/**
 * 根据id获取用户信息
 * @param id
 * @returns {Promise<Model<any, TModelAttributes>>}
 */
exports.getUserById = async (id) => {
  try {
    // 查询条件
    const condition = {
      where: {
        id,
      },
    };
    return await User.findOne(condition);
  } catch (error) {
    throw new Error(error);
  }
};
